Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 2.7 岩石探测,我不能探测到所有的岩石_Python 2.7_Opencv_Image Processing - Fatal编程技术网

Python 2.7 岩石探测,我不能探测到所有的岩石

Python 2.7 岩石探测,我不能探测到所有的岩石,python-2.7,opencv,image-processing,Python 2.7,Opencv,Image Processing,我不知道如何去探测所有的岩石。我能发现一些石头。有些岩石是黑色的,我看不出来 import numpy as np import cv2 def nothing(x): pass H_Max= 169 H_Min=147 S_Max=103 S_Min=19 V_Max=199 V_Min=139 while True: name_pic='153.jpg' img = cv2.imread(name_pic) frame = cv2.imread(name_p

我不知道如何去探测所有的岩石。我能发现一些石头。有些岩石是黑色的,我看不出来

import numpy as np
import cv2
def nothing(x):
    pass
H_Max= 169
H_Min=147
S_Max=103
S_Min=19
V_Max=199
V_Min=139

while True:
    name_pic='153.jpg'
    img = cv2.imread(name_pic)
    frame = cv2.imread(name_pic)
    img = cv2.resize(img, (1500, 1000))
    frame = cv2.resize(frame, (1500, 1000))
    blurred = cv2.GaussianBlur(frame, (5, 5), 0)
    hsv = cv2.cvtColor(blurred, cv2.COLOR_BGR2HSV)
    mask = cv2.inRange(hsv, (H_Min, S_Min, V_Min), (H_Max, S_Max, V_Max))
    kernel = np.ones((5,5), np.uint8)

    frame_out, contours, hierarchy = cv2.findContours(
    mask, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
    for cnt in contours:
        M = cv2.moments(cnt)
        if M['m00'] == 0 :
            M['m00'] = 0.1
    cx = int(M['m10'] / M['m00'])
    cy = int(M['m01'] / M['m00'])
    area = cv2.contourArea(cnt)
    if area < 2.5 :
        continue
    x, y, w, h = cv2.boundingRect(cnt)
    cv2.rectangle(frame, (x, y), (x + w, y + h), (0, 0, 255), 2)
    cv2.imshow('frame1',frame)
    cv2.imshow('fimg', img)
    key = cv2.waitKey(1) & 0xFF
    if key == 27:
        break
cv2.destroyAllWindows()
将numpy导入为np
进口cv2
def nothing(x):
通过
H_Max=169
H_Min=147
S_Max=103
S_Min=19
V_Max=199
V_Min=139
尽管如此:
name_pic='153.jpg'
img=cv2.imread(名称\图片)
frame=cv2.imread(name\u pic)
img=cv2.调整大小(img,(15001000))
frame=cv2。调整大小(frame,(15001000))
模糊=cv2.高斯模糊(帧,(5,5),0)
hsv=cv2.CVT颜色(模糊,cv2.COLOR_BGR2HSV)
掩模=cv2.in范围(hsv,(H_最小值,S_最小值,V_最小值),(H_最大值,S_最大值,V_最大值))
内核=np.ones((5,5),np.uint8)
框架、轮廓、层次=cv2.findContours(
面罩,cv2.RETR_树,cv2.CHAIN_近似值(简单)
对于轮廓中的cnt:
M=cv2.力矩(cnt)
如果M['m00']==0:
M['m00']=0.1
cx=int(M['m10']/M['m00']
cy=int(M['m01']/M['m00']
面积=cv2。轮廓面积(cnt)
如果面积小于2.5:
持续
x、 y,w,h=cv2.boundingRect(cnt)
矩形(框架,(x,y),(x+w,y+h),(0,0,255),2)
cv2.imshow('frame1',frame)
cv2.imshow('fimg',img)
key=cv2.waitKey(1)和0xFF
如果键==27:
打破
cv2.destroyAllWindows()
我不知道如何提高我的检测能力

多谢各位

这是处理前后的图片

检测前:

检测后:


我会尝试HSV解决方案。您可以选择一个范围内的颜色,然后保留/删除它。我会尽力做点什么,但我不能保证会有结果。你对第一张图片做过任何预处理吗?这是我现在处理的第一张图片。顺便问一下,你打算检测多少块石头?我不知道你是否能找到所有这些,因为有一些误报没有什么,我不能达到一个更可接受的结果我想检测超过15厘米的石头大小