小编Zda*_*daR的帖子

用 OpenCV Python 编写超过 4 个通道的图像

这对我来说是一个持续的挑战。我正在尝试使用 openCV 将两个 3 RGB 图像组合成单个 6 通道 TIFF 图像。

到目前为止,我的代码如下:

import cv2
import numpy as np

im1 = cv2.imread('im1.jpg')
im2 = cv2.imread('im2.jpg')

merged = np.concatenate((im1, im2), axis=2) # creates a numpy array with 6 channels 

cv2.imwrite('merged.tiff', merged)
Run Code Online (Sandbox Code Playgroud)

我也尝试过使用 openCV 的 split() 和 merge() 方法并获得相同的结果

import cv2
import numpy as np

im1 = cv2.imread('im1.jpg')
im2 = cv2.imread('im2.jpg')

b1,g1,r1 = cv2.split(im1)
b2,g2,r2 = cv2.split(im2)

merged = cv2.merge((b1,g1,r1,b2,g2,r2))

cv2.imwrite('merged.tiff', merged)
Run Code Online (Sandbox Code Playgroud)

当我运行 imwrite() 函数时,出现以下错误:

OpenCV 错误:断言失败 (image.channels() == 1 || image.channels() == 3 …

python opencv numpy image

8
推荐指数
1
解决办法
1万
查看次数

图像中的对象检测(HOG)

我想检测显微镜图像细胞内的物体.我有很多带注释的图像(带有对象的应用程序50.000个图像和没有对象的500.000个图像).

到目前为止,我尝试使用HOG提取特征并使用逻辑回归和LinearSVC进行分类.我已经为HOG或颜色空间(RGB,HSV,LAB)尝试了几个参数,但我没有看到很大的差异,预测率约为70%.

我有几个问题.我应该使用多少图像来训练描述符?我应该使用多少图像来测试预测?

我已经尝试了大约1000张图像用于训练,这给了我55%的正面和5000,这给了我大约72%的正面.但是,它也很大程度上取决于测试集,有时测试集可以达到80-90%的正检测图像.

以下是包含对象和两个没有对象的图像的两个示例:

对象01

对象02

细胞01

细胞02

另一个问题是,有时图像包含几个对象:

对象

我应该尝试增加学习集的示例吗?我该如何选择训练集的图像,只是随机的?我还能尝试什么?

任何帮助都将非常感激,我刚开始发现机器学习.我正在使用Python(scikit-image和scikit-learn).

python image object-detection scikit-learn scikit-image

7
推荐指数
1
解决办法
2467
查看次数

使用 cv2 调整图像大小后,如何获取新的边界框坐标

我有一个大小为 720 x 1280 的图像,我可以像这样将其调整为 256 x 256

import cv2
img = cv2.imread('sample_img.jpg')
img_small = cv2.resize(img, (256, 256), interpolation=cv2.INTER_CUBIC)
Run Code Online (Sandbox Code Playgroud)

假设我在原始图像中有一个边界框(左上角 (50, 100),右下角 (350, 300)),我如何获得新边界框的坐标?

python opencv computer-vision

7
推荐指数
1
解决办法
4814
查看次数

尝试使用python boto库插入浮点数时发生DynamoDBNumberError

程式码片段:

conn = dynamo_connect()

company = Table("companydb",connection=conn)

companyrecord = {'company-slug':'www-google-com12','founding-year':1991, 'randomlist' :[1,2,3,4,5], 'randomdict' : {'a':[1,2,3],'b':'something','randomnumber':10.55} }

company.put_item(data=companyrecord)
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

File "C:\Python27\lib\site-packages\boto\dynamodb2\items.py", line 329, in prepare_full
    final_data[key] = self._dynamizer.encode(value)
  File "C:\Python27\lib\site-packages\boto\dynamodb\types.py", line 279, in encode
    return {dynamodb_type: encoder(attr)}
  File "C:\Python27\lib\site-packages\boto\dynamodb\types.py", line 335, in _encode_m
    return dict([(k, self.encode(v)) for k, v in attr.items()])
  File "C:\Python27\lib\site-packages\boto\dynamodb\types.py", line 279, in encode
    return {dynamodb_type: encoder(attr)}
  File "C:\Python27\lib\site-packages\boto\dynamodb\types.py", line 305, in _encode_n
    raise DynamoDBNumberError(msg)
boto.dynamodb.exceptions.DynamoDBNumberError: BotoClientError: Inexact numeric for `10.55`
Run Code Online (Sandbox Code Playgroud)

python floating-point boto amazon-web-services amazon-dynamodb

6
推荐指数
3
解决办法
5454
查看次数

如何在 Scrapy 框架中使用 RobotsTxtMiddleware?

Scrapy 框架有 RobotsTxtMiddleware。它需要确保 Scrapy 尊重 robots.txt。它需要在设置ROBOTSTXT_OBEY = True中设置,然后 Scrapy 会尊重 robots.txt 策略。我做到了并运行了蜘蛛。在调试中,我看到了对http://site_url/robot.txt 的请求。

  1. 这是什么意思,它是如何工作的?
  2. 我如何处理响应?
  3. 如何查看和理解robot.txt 中的规则?

python robots.txt scrapy

6
推荐指数
1
解决办法
2181
查看次数

为什么要转为灰度opencv?

我正在 opencv 中进行一些基本的人脸检测,我看到的每个示例代码都会转换为灰度,然后在灰度上执行人脸检测...

起初我以为这是出于性能原因,但我做了比较,发现性能没有明显提升。

这段代码:

faceCascade.detectMultiScale(*image, *faces, 1.1, 3, CASCADE_SCALE_IMAGE, Size(60,60));
Run Code Online (Sandbox Code Playgroud)

执行效果与此代码大致相同:

Mat gray;
cvtColor(*image, gray, COLOR_BGR2GRAY);
faceCascade.detectMultiScale(gray, *faces, 1.1, 3, CASCADE_SCALE_IMAGE, Size(60,60));
Run Code Online (Sandbox Code Playgroud)

那么这就引出了一个问题,为什么大家都在opencv中转换为灰度呢?

谢谢

opencv

6
推荐指数
1
解决办法
4024
查看次数

使用 Python 和 Numpy 创建原始图像的图像图块 (m*n)

我正在使用 numpy 从我的 16 位 tiff 图像 (13777*16004) 创建 (224*224) 的图块。我能够沿着行和列裁剪/切片成 224*224 的相等图块。我在尝试创建移动了一半的瓷砖尺寸的新瓷砖时遇到了问题......例如:我试图实现的粗略算法

(1:224, 1:224)

(1:224, 112:336)

( , 224:448)

目标是保留图块大小(224*224),同时移动图块大小的一半以获得更多图像图块...

为执行任务而编写的代码片段

row_x =  img.shape[0]
column_y = img.shape[1]

tile_size_x = 224
tile_size_y = 224


range_x = mpz(ceil(row_x/tile_size_x))
range_y = mpz(ceil(column_y/tile_size_y))

for x in range(range_x, row_x):

    for y in range(range_y, column_y): 

        x0 = x * tile_size_x 

        x1 = int(x0/2) + tile_size_x

        y0 = y * tile_size_y 

        y1 = int(y0/2) + tile_size_y



        z = img[x0:x1, y0:y1]
        print (z.shape,z.dtype)
Run Code Online (Sandbox Code Playgroud)

我一直得到错误的结果,有人可以帮忙吗???

python opencv numpy image

6
推荐指数
1
解决办法
1万
查看次数

pygame rect碰撞小于图像

如何在pygame中定义小于图像的矩形碰撞检测?我想要像第二个图像那样的碰撞模式,但是当我尝试在方法 rect 中设置宽度和高度时,我有一个剪切图像。

在此处输入图片说明

当我尝试使用图像大小进行设置时,碰撞检测显示为红色

    self.rect = pygame.rect.Rect(location, self.image.get_size())
Run Code Online (Sandbox Code Playgroud)

如果我使用宽度和高度设置大小,我只有第三张图片

    self.rect = pygame.rect.Rect(location, (32, 150))
Run Code Online (Sandbox Code Playgroud)

我真的不喜欢使用像素完美碰撞,因为它是最慢的碰撞检测,所以有人知道如何使用 Rect 实现第二种图像碰撞方法?谢谢。

python pygame image rect collision

5
推荐指数
1
解决办法
2123
查看次数

numpy数组的条件运算

我是NumPy的新手,我遇到了在numpy数组上运行一些条件语句的问题.假设我有3个numpy数组,如下所示:

A:

[[0, 4, 4, 2],
 [1, 3, 0, 2],
 [3, 2, 4, 4]]
Run Code Online (Sandbox Code Playgroud)

b:

[[6, 9, 8, 6],
 [7, 7, 9, 6],
 [8, 6, 5, 7]]
Run Code Online (Sandbox Code Playgroud)

而且,c:

[[0, 0, 0, 0],
 [0, 0, 0, 0],
 [0, 0, 0, 0]]
Run Code Online (Sandbox Code Playgroud)

我有一个a和b的条件语句,其中我想使用b的值(如果满足a和b的条件)来计算c的值:

c[(a > 3) & (b > 8)]+=b*2
Run Code Online (Sandbox Code Playgroud)

我收到一个错误说:

Traceback (most recent call last):
  File "<interactive input>", line 1, in <module>
ValueError: non-broadcastable output operand with shape (1,) doesn't match the broadcast shape (3,4)
Run Code Online (Sandbox Code Playgroud)

知道我怎么能做到这一点?

我想c的输出看起来如下:

[[0, 18, 0, 0], …
Run Code Online (Sandbox Code Playgroud)

python arrays conditional numpy

5
推荐指数
2
解决办法
1万
查看次数

InputMethodService的Instrumentation测试用例

我已经扩展了InputMethodService类来创建我的自定义IME.但是,我正在努力编写有效的Instrumentation测试用例来验证行为.以前Service,可以使用测试ServiceTestCase<YourServiceClass>.但它似乎已被弃用,新格式看起来像这样.现在在给定的指导方针中,我正在努力解决这个片段:

CustomKeyboardService service =
            ((CustomKeyboardService.LocalBinder) binder).getService();
Run Code Online (Sandbox Code Playgroud)

由于我正在扩展InputMethodService,它已经抽象了IBinder,我怎样才能LocalBinder获得这个代码片段的运行?目前,此代码段抛出以下异常:

java.lang.ClassCastException:android.inputmethodservice.IInputMethodWrapper无法强制转换为com.osrc.zdar.customkeyboard.CustomKeyboardService $ LocalBinder

扩展类看起来像:

public class CustomKeyboardService extends InputMethodService {

    // Some keyboard related stuff

    public class LocalBinder extends Binder {

        public CustomKeyboardService getService() {
            // Return this instance of LocalService so clients can call public methods.
            return CustomKeyboardService.this;
        }
    }

    // Some keyboard related stuff

}
Run Code Online (Sandbox Code Playgroud)

如何扩展我的自定义类,以便CustomKeyboardService service = ((CustomKeyboardService.LocalBinder) binder).getService();不返回错误?

这是我的测试用例代码:

@RunWith(AndroidJUnit4.class)
public class ExampleInstrumentedTest2 …
Run Code Online (Sandbox Code Playgroud)

android android-input-method servicetestcase android-service-binding android-instrumentation

5
推荐指数
1
解决办法
121
查看次数