Hi,

Problem is easy fixed, in your ImageDraw.__init__() change:
self.axisOrder = 'row-major'
to
self.axisOrder = 'col-major'

Patrick

On Tuesday, 13 October 2020 at 9:34:01 pm UTC+10:30 [email protected] 
wrote:

>
> Hello!
>
> I'm trying to draw on an ImageItem with a DrawKernel, but it's weird, when 
> I drag the mouse right the drawing line goes up and when I drag it down it 
> paints to the left:-D Here's my code. I would really appreciate help as I 
> have no idea what I'm doing wrong:-D
>
> Maria
>
> import sys, os, pathlib, warnings, datetime, tempfile, glob, time
> import gc
> from natsort import natsorted
> from tqdm import tqdm
>
> from PyQt5 import QtGui, QtCore, Qt, QtWidgets
> import pyqtgraph as pg
> from pyqtgraph import GraphicsScene
>
> import numpy as np
> import cv2
> from scipy.ndimage import gaussian_filter
>
> import sys
>
> import h5py
>
> import time
>
> from matplotlib import image
>
> from pyqtgraph import Point
>
> class MainW(QtGui.QMainWindow):
>     def __init__(self, image=None):
>         super(MainW, self).__init__()
>
>         pg.setConfigOptions(imageAxisOrder="col-major")
>         self.setGeometry(50, 50, 1200, 1000)
>
>         self.setStyleSheet("QMainWindow {background: 'black';}")
>
>         self.cwidget = QtGui.QWidget(self)
>         self.l0 = QtGui.QGridLayout()
>         self.cwidget.setLayout(self.l0)
>         self.setCentralWidget(self.cwidget)
>
>         self.win = pg.GraphicsLayoutWidget()
>         #self.l0.addWidget(self.win, 0,3, b, 20)
>
>         self.l0.addWidget(self.win)
>
>
>         #self.show()
>
>         self.load_image()
>
>         self.make_viewbox()
>
>         self.set_image()
>
>         self.win.show()
>
>     def load_image(self):
>         
> filename='C:/Users/koester_lab/Documents/Maria/registered/fish2_6dpf_medium_aligned.h5'
>         filename_='C:/Users/koester_lab/Documents/im.jpg'
>         with h5py.File(filename, "r") as f:
>             # List all groups
>             print("Keys: %s" % f.keys())
>             start=time.time()
>             data=f['data'][100,10,:,:]
>             end=time.time()
>             print('Time to load file: ',end-start)
>             print(data.shape)
>         self.data=np.array(data).astype('float64')
>         #self.data=image.imread(filename_)
>         print(np.max(self.data))
>         print(np.min(self.data))
>         self.data *= 255.0/self.data.max()
>         print(np.max(self.data))
>         print(np.min(self.data))
>
>     def set_image(self):
>         self.img.setImage(self.data, autoLevels=False, 
> lut=None,levels=[0,255])
>         self.show()
>
>     def make_viewbox(self):
>         self.p0 = pg.ViewBox()
>         self.brush_size=3
>         self.win.addItem(self.p0, 0, 0)
>         self.p0.setMenuEnabled(False)
>         self.p0.setMouseEnabled(x=True, y=True)
>         self.p0.setAspectLocked(True)
>         self.img = ImageDraw(viewbox=self.p0, parent=self)
>         self.img.autoDownsample = False
>         self.p0.scene().contextMenuItem = self.p0
>         #self.p0.setMouseEnabled(x=False,y=False)
>         self.Ly,self.Lx = 512,512
>         kern = 100*np.ones((10,10))
>         self.img.setDrawKernel(kern, mask=kern, center=(1,1), mode='add')
>         self.p0.addItem(self.img)
>
>
>
> class ImageDraw(pg.ImageItem):
>     """
>     **Bases:** :class:`GraphicsObject <pyqtgraph.GraphicsObject>`
>     GraphicsObject displaying an image. Optimized for rapid update (ie 
> video display).
>     This item displays either a 2D numpy array (height, width) or
>     a 3D array (height, width, RGBa). This array is optionally scaled (see
>     :func:`setLevels <pyqtgraph.ImageItem.setLevels>`) and/or colored
>     with a lookup table (see :func:`setLookupTable 
> <pyqtgraph.ImageItem.setLookupTable>`)
>     before being displayed.
>     ImageItem is frequently used in conjunction with
>     :class:`HistogramLUTItem <pyqtgraph.HistogramLUTItem>` or
>     :class:`HistogramLUTWidget <pyqtgraph.HistogramLUTWidget>` to provide 
> a GUI
>     for controlling the levels and lookup table used to display the image.
>     """
>
>
>
>     def __init__(self, image=None, viewbox=None, parent=None, **kargs):
>         super(ImageDraw, self).__init__()
>
>         self.autoDownsample = False
>         self.axisOrder = 'row-major'
>         self.removable = False
>
>         self.parent = parent
>         #kernel[1,1] = 1
>         #self.setDrawKernel(kernel_size=self.parent.brush_size)
>
>     def mouseDragEvent(self, ev):
>         if ev.button() != QtCore.Qt.LeftButton:
>             ev.ignore()
>             return
>         elif self.drawKernel is not None:
>             ev.accept()
>             self.drawAt(ev.pos(), ev)
>
>     def mouseClickEvent(self, ev):
>         print(ev.pos())
>
>
>
> def run(image=None):
>     # Always start by initializing Qt (only once per application)
>     warnings.filterwarnings("ignore")
>     app = QtGui.QApplication(sys.argv)
>
>     main_window=MainW(image=image)
>     main_window.show()
>     ret = app.exec_()
>     #sys.exit(ret)
>
> run()
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"pyqtgraph" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/pyqtgraph/f7e317db-cb81-404a-949a-c89e9dfe5295n%40googlegroups.com.

Reply via email to